package jamirr;

public interface MethodMirror<B, R> extends MemberMirror<B>, Invokable, Named {

    /**
     * 定义方法是否为抽象的。
     *
     * @return 方法是否为抽象的。
     */
    default boolean isAbstract() {
        return false;
    }

    /**
     * @return 返回类型
     */
    ReturnType<R> getReturnType();

    /**
     * 调用方法。
     *
     * @param instance  实例对象
     * @param arguments 参数
     * @return 方法执行结果
     */
    R invoke(B instance, Object... arguments);
}
